Skip to main content

Governance for autonomous agents. Intercepts every action, enforces policy, writes tamper-evident receipts.

Project description

transient-trace

Governance for AI agents. Every action an agent takes — subprocess calls, tool use, network requests — is evaluated against a policy and recorded as a tamper-evident, cryptographically signed receipt before it executes.

Part of Transient, the trust infrastructure for autonomous agents.

Install

pipx install transient-trace

pipx installs into an isolated environment and puts the transient-trace binary on PATH permanently. If you don't have pipx: brew install pipx && pipx ensurepath.

Upgrade

pipx upgrade transient-trace

Quickstart

The fastest path to governed agents is the wrap command. It installs a persistent shim so every invocation of the binary goes through governance automatically, with no prefix required.

transient-trace wrap install claude --auto-rc

source ~/.zshrc

Every claude invocation is now governed with a full receipt trail.

transient-trace wrap status

transient-trace receipts list --since 30m

transient-trace receipts summary --since 1h

How it works

transient-trace sits between your agent and the operating system. Every action passes through the governance layer before it executes — including calls that use absolute binary paths or run inside nested subprocesses.

No changes to your agent framework required. Works inside Claude Code, LangChain, custom harnesses, and raw Python out of the box.

Enforce a policy

By default, transient-trace runs in audit mode — records everything, blocks nothing. To enforce a policy, switch to strict mode:

cat > my-policy.json << 'EOF'
{
  "version": 1,
  "defaultAction": "deny",
  "rules": [
    { "id": "allow-git",       "action": "allow", "actionClasses": ["read", "write_low"] },
    { "id": "allow-anthropic", "action": "allow", "actionClasses": ["network"],
      "hosts": ["api.anthropic.com"] }
  ]
}
EOF

transient-trace run --mode strict --policy "$(cat my-policy.json)" claude -p "..."

Or set strict mode as the permanent default:

transient-trace config set mode strict

Python SDK

For direct integration into Python agents:

from transient_trace import Client

client = Client({
    "agentId": "my-agent",
    "mode": "permissive",
    "packages": ["shell"],
})

result = client.executeActionWithReceipt(
    lambda: {"ok": True},
    {"target": "resource-1", "action_class": "write_low"}
)

print(result["receipt"]["receipt_id"])       # TR-...
print(result["receipt"]["signature"]["alg"]) # Ed25519
print(result["decision"]["outcome"])         # allow

If policy returns deny, raises RuntimeError: Denied: <reason_code>.

Receipts

Every governed action produces a signed receipt:

{
  "receipt_id": "TR-01KPHGWX7C7A2BQYJKX93YP59Q",
  "execution_status": "executed",
  "event_snapshot": {
    "action_class": "x.read",
    "matched_rule_id": "x-read-allow",
    "matched_rule_reason": "x-governance/social-listening: read allowed."
  },
  "signature": {
    "alg": "Ed25519",
    "sig": "xRVLkN4r1hNy..."
  }
}

Receipts are tamper-evident. The event snapshot is hashed with SHA-256 and signed with Ed25519 before write. Signatures are cross-verifiable between the Python and TypeScript SDKs.

Governance packages

Governance packages are pre-built rule sets you can drop into any project:

client = Client({
    "agentId": "my-agent",
    "packages": ["shell", "filesystem", "web"],
})

Available packages map to OWASP Agentic Security Initiative threat categories:

Package Covers
shell Inline interpreter execution
filesystem Destructive file operations
web Outbound HTTP and SSRF
code Git push, package installs, supply chain
privilege sudo, su, chmod escalation
messaging Outbound message delivery

Further reading

Transient — full product docs, Recall, Intelligence, receipt bus

ATP 1.0 — the open protocol specification underlying every receipt

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

transient_trace-0.2.0a2.tar.gz (188.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

transient_trace-0.2.0a2-py3-none-any.whl (122.8 kB view details)

Uploaded Python 3

File details

Details for the file transient_trace-0.2.0a2.tar.gz.

File metadata

  • Download URL: transient_trace-0.2.0a2.tar.gz
  • Upload date:
  • Size: 188.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for transient_trace-0.2.0a2.tar.gz
Algorithm Hash digest
SHA256 a35720a0734dbbbdbf31fd9e15fa75a8e1216e779e1b7e1356d6e43027e03454
MD5 48f9ba999ca22880f7c73f3649f23b30
BLAKE2b-256 c3c249fa92db8c73db2035245459157ade8e1d6c934d606a0e77be505bddbf8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for transient_trace-0.2.0a2.tar.gz:

Publisher: publish.yml on james-transient/transient-trace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file transient_trace-0.2.0a2-py3-none-any.whl.

File metadata

File hashes

Hashes for transient_trace-0.2.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 b161fb704a29108dd54fd7f1947cf4b31de1a7caaac2905f16a4706b39934db5
MD5 8668b259596543c4e68f522295be7494
BLAKE2b-256 df5d8f4bba264ddb1e11139eac7ee33d7cad7c5b9262f58def9f79940ddbc86a

See more details on using hashes here.

Provenance

The following attestation bundles were made for transient_trace-0.2.0a2-py3-none-any.whl:

Publisher: publish.yml on james-transient/transient-trace

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page